<?php

use think\Db;
use think\Config;
use fast\Http;

if (!function_exists('userInviteReward')) {

    // 用户邀请奖励
    function userInviteReward($user_id){
        $coupon = json_decode(Config::get('site.user_invite_coupon'),true);
        $coupon = $coupon[0];
        if( $coupon['expire_days'] ) $expiretime = strtotime("+{$coupon['expire_days']} days", strtotime(date('Y-m-d')
            .'23:59:59'));
        $params = [
            'user_id' => $user_id,
            'coupon_id' => 0,
            'name' => '分享好友得优惠券',
            'reduction_amount' => $coupon['reduction_amount'],
            'discount_amount' => $coupon['discount_amount'],
            'createtime' => time(),
            'updatetime' => time(),
            'expiretime' => $expiretime,
            'status' => 1
        ];

        $result = \app\admin\model\CouponUser::create($params);

        if($result){
            return true;
        }else{
            return false;
        }

    }
}

if (!function_exists('getDistanceBy2Point')) {
    /**
     * 根据起点坐标和终点坐标测距离
     * @param  [array]   $from      [起点坐标(经纬度),例如:array(118.012951,36.810024)]
     * @param  [array]   $to        [终点坐标(经纬度)]
     * @param  [bool]    $km        是否以公里为单位 false:米 true:公里(千米)
     * @param  [int]     $decimal   精度 保留小数位数
     * @return [string]  距离数值
     */
    function getDistanceBy2Point($from, $to, $km = true, $decimal = 2){
        sort($from);
        sort($to);
        $EARTH_RADIUS = 6378.138; // 地球半径系数
        $distance = $EARTH_RADIUS*2*asin(sqrt(pow(sin( ($from[0]*pi()/180-$to[0]*pi()/180)/2),2)+cos($from[0]*pi()/180)*cos($to[0]*pi()/180)* pow(sin( ($from[1]*pi()/180-$to[1]*pi()/180)/2),2)))*1000;
        if($km){
            // 千米
            return round($distance / 1000, 2);
        }
        // 米
        return round($distance, $decimal);
    }
}

if (!function_exists('getNewOrderNo')) {
    /**
     * 使用雪花算法生成订单号
     * @param  [int]     $length   长度 整数
     * @return [string]  订单号
     */
    function getNewOrderNo($length = 18)
    {
        $n = $length - 10;
        //1、年月日
        $date = date('Ymd');
        //2、基于微秒生成随机串
        $id = uniqid();
        //3、截取随机串的随机后7位
        $sub = substr($id, 7, 13);
        //4、将随机串分割成数组
        $str_arr = str_split($sub, 1);
        //5、转换成ASCLL值,并取第一位连接成字符串
        $ascll_arr = array_map('ord', $str_arr);
        $ascll_str = implode('', $ascll_arr);
        //6、随机取连续的4位
        $max_start_index = strlen($ascll_str) - 1 - 4;
        $start_index = rand(0, $max_start_index);
        $str = substr($ascll_str, $start_index, 4);
        //7、生成末尾的n位随机数
        $rand = mt_rand('1' . str_repeat('0', $n - 1), str_repeat('9', $n));
        return $date . $str . $rand;
    }
}

if (!function_exists('sendSmsNotice')) {

    // 发送短信通知
    function sendSmsNotice($mobile,$number){
        $u = Config::get('site.username');
        $k = Config::get('site.apikey');
        $sign = Config::get('site.sign');
        $template = [
            "【{$sign}】有新订单啦~，请到管家首页抢单。",
            "【{$sign}】您的订单已被接单，请及时查看。",
            "【{$sign}】管家已出发，请及时关注查看管家位置。",
            "【{$sign}】管家已到达学校，请及时关注查看管家位置。",
            "【{$sign}】用户已取消订单，请到管家端订单中心查看。",
        ];
        $content = $template[0];
        $url = "https://api.smsbao.com/sms?u={$u}&p={$k}&m={$mobile}&c={$content}";
        $ret = Http::get($url);

        if($ret != 0){
            return false;
        }else{
            return true;
        }
    }
}
